#!/bin/bash
# fdevmgr 配置
# author    : guyadong
# date      : 2019/08/01
# 导入标志,确保只会被导入一次
fdevmgr_config_included=true
# 脚本初始化
[ "$common_init_included" != 'true' ] && . ./common_init.sh
webcfg_title='fdevmgrweb 配置'


function _make_ip_items(){
    local c=1
    for e in $1;  do echo -n "$c $e "  ; c=$(expr $c + 1); done
}

# 设置 fdevmgrweb 当前主机地址参数
# 如果点返回则返回3,否则返回0
function fun_fdevmgrweb_selfaddr_cfg(){
    local input=$fdevmgrweb_selfaddress
    if [ -z "$input" ]
    then
        local ips=($(nic_info))
        # 没有网卡时报错退出
        [ ${#ips[@]} -ge 1 ] || exit_on_error_message "没有找到系统中安装的网卡(NOT FOUND NIC)"
        input=${ips[0]%%\[*} 
    fi

    # 保存对话框选项的值到$input,如果对话框选项返回,则为'EXIT_$?'
    input=$(dialog \
        --backtitle "$DEFAULT_BACK_TITLE$context_backtitle_suffix" \
        --title "$webcfg_title" $DLG_BACK_BTN --nocancel \
        --inputbox "请输入外部访问本机web服务的地址(域名或ip地址):" 0 0  "$input" \
        3>&1 1>&2 2>&3 || echo EXIT_$?)
    [[ "$input" =~ EXIT_[0-9] ]] && return ${input##*EXIT_} 
    input=${input// //}
    [ -n "$input" ]      || exit_on_error_message "地址不可为空"
    is_valid_host $input || exit_on_error_message "无效的域名或ip地址: $input"
        
    # 保存所选择的地址
    fdevmgrweb_selfaddress="$input"
     
    # 保存webrdis host地址，如果 webredis 使用了本机服务则使用 fdevmgrweb_selfaddress 作为 webredis_host
    fdevmgrweb_wrhost=$webredis_host
    [ $webredis_use_local -eq 0 ] && fdevmgrweb_wrhost=$fdevmgrweb_selfaddress
    return 0
}
# 设置 fdevmgr 上传位置参数
# 如果点返回则返回3,否则返回0
function fun_fdevmgr_upload_folder_cfg(){
    local input=$fdevmgrweb_upload_folder
    if [ -z "$input" ] 
    then 
        input=$HOME/facelog_upload
        # 不存在则创建默认上传文件夹
        if [ ! -e "$input" ]
        then
            mkdir -p $input || exit_on_error_message "创建upload文件夹失败: $input"
        else
            # facelog_upload 不是文件夹则报错
            [ ! -d "$input" ] && exit_on_error_message "不是文件夹: $input"
        fi        
    fi

    # 保存对话框选项的值到$input,如果对话框选项返回,则为'EXIT_$?'
    local folder=$(dialog \
        --backtitle "$DEFAULT_BACK_TITLE$context_backtitle_suffix" \
        --title "文件上传文件夹位置" $DLG_BACK_BTN --nocancel \
        --dselect "$input" 10 60   \
        3>&1 1>&2 2>&3 || echo EXIT_$?)
    [[ "$folder" =~ EXIT_[0-9] ]] && return ${folder##*EXIT_} 
    folder=${folder// //}
           
    # 保存所选择的文件夹
    fdevmgrweb_upload_folder="$folder"
     
    return 0
}
# 检查 webredis 参数是否有无效值,有则返回-1,无则返回0
# $1 $port
# $2 $fhost
# $3 $fport
function _check_fdevmgr_params(){
    [[ ! "$1"  =~ ^[0-9]{1,5}$      ]] && exit_on_error_message "端口号(port)不可为空,必须为数字" 
    [[ ! "$2"  =~ ^[A-Za-z0-9_\.]+$ ]] && exit_on_error_message "主机名(fhost)无效" 
    [[ ! "$3"  =~ ^[0-9]{1,5}$      ]] && exit_on_error_message "端口号(fport)不可为空,必须为数字" 
    return 0
}

# 设置 fdevmgr 服务参数
# 如果点返回则返回3,否则返回0
function fun_fdevmgr_cfg(){
    local port="$fdevmgr_port"
    local fhost="$facelog_host"
    local fport="$facelog_port"
    [ "$facelog_install" != 'on' ] && fhost='' && fport=''
    while true  ; 
    do 
        # 保存对话框选项的值到$values,如果对话框选项返回,则$values值为'EXIT_$?'
        local values=$(dialog \
            --backtitle "$DEFAULT_BACK_TITLE$context_backtitle_suffix" \
            --title "$webcfg_title" $DLG_BACK_BTN --nocancel \
            --form "请输入 fdevmgr 服务运行参数:" 15 66 0 \
                "服务端口号(port)       :" 1 1     "$port"   1 26 34 0 \
                "facelog服务主机名(host):" 2 1	    "$fhost"  2 26 34 0 \
                "facelog服务端口号(port):" 3 1     "$fport"  3 26 34 0 \
                3>&1 1>&2 2>&3 || echo EXIT_$?)
        
        [[ "$values" =~ EXIT_[0-9] ]] && return ${values##*EXIT_}
        port="$(echo   "$values" | sed -n 1p)"
        fhost="$(echo  "$values" | sed -n 2p)"
        fport="$(echo  "$values" | sed -n 3p)"

        # 参数检查失败则继续循环
        ! _check_fdevmgr_params "$port" "$fhost" "$fport" && continue 
        # 按确认按钮时将对话框返回值分别保存到对应的变量中
        fdevmgr_port="$port"
        facelog_host="$fhost"
        facelog_port="$fport"
        return 0
    done

}

#_make_ip_items
#fun_fdevmgrweb_selfaddr_cfg
#echo $fdevmgrweb_wrhost